<?php

/**
 * Список названий тестов.
 *
 */
class Tests_Backend_Groups_List extends Backend_Component_List
{
    
    /**
     * Описание первичного ключа таблицы.
     *
     * @var mixed
     */
    protected $_key = 'id';
    
    /**
     * Количество записей, выводимых на странице.
     *
     * @var integer
     */
    protected $_per_page = 20;

    /**
     * Наименования колонок списка.
     *
     * @var array
     */
    protected $_columns = array('title', 'test_collection');
    
    /**
     * Наименование поля, по которому нужно упорядочивать записи.
     *
     * @var string
     */
    protected $_order = 'title';
    
    
    /**
     * Формирует запрос выборки записей страницы.
     *
     * @return  string
     */
    protected function _getQueryBody()
    {
        $query = 'SELECT SQL_CALC_FOUND_ROWS
                         `t_g`.`id`,
                         `t_g`.`title`, 
                         GROUP_CONCAT(`t_t`.`title` SEPARATOR ", ") AS `test_collection`
                    FROM
                         `tests_groups` `t_g`
               LEFT JOIN 
                         `tests_groups_collection` `t_g_c`
                      ON 
                         `t_g_c`.`title_id` = `t_g`.`id` 
               LEFT JOIN
                         `tests_titles` `t_t` 
                      ON 
                         `t_t`.`id` = `t_g_c`.`test` 
                GROUP BY 
                         `t_g`.`title`
                         ' . $this->_getOrder();
        return $query;
    }
        
}
